home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 001 / yahtzee.arc / YAHTZEE.BAS
BASIC Source File  |  1985-09-27  |  21KB  |  643 lines

  1. 0 GOTO 65000
  2. 1 '
  3. 1000 '     YATZEE
  4. 1010 ' ORIGINAL BY JL HELMS & MF PEZOK FOR CCII
  5. 1020 ' CORONADO, CA
  6. 1030 ' ADAPTED TO IBM PC BY PATRICK LEABO
  7. 1040 ' TUCSON, AZ
  8. 1050 '
  9. 1060 DEFINT A-Z
  10. 1070 DIM C(5):DIM K(18,7):DIM F(5):DIM A$(7)
  11. 1080 DIM S(6,5):DIM M(13),TN(6),DU(6):KEY OFF:COLOR 5,3,1:WIDTH 80
  12. 1090 SCREEN 0,1:RESTORE 1150:FOR N= 1 TO 6:READ TN(N):NEXT
  13. 1100 COMMON MENU
  14. 1110 GOSUB 5090
  15. 1120 C1= 39:C2= 63:C3= 33:C4= 56
  16. 1130 GOSUB 4660
  17. 1140 CLS:GOSUB 4430
  18. 1150 DATA 49,51,53,54,56,61
  19. 1160 GOSUB 6820:REM  draw yatzee board
  20. 1165 COLOR 7,0
  21. 1170 RANDOMIZE VAL(RIGHT$(TIME$,2))
  22. 1180 LOCATE 25,1
  23. 1190 PRINT "HOW MANY PLAYERS?  ";:LOCATE ,,1:GOSUB 2090
  24. 1200 GOSUB 7100: N=ASC(KB$)-48
  25. 1210 IF N< 1 OR N> 5 THEN 1180
  26. 1220 IF N< 5 THEN GOSUB 6000
  27. 1230 IF CC= 1 THEN GOSUB 5480
  28. 1240 LOCATE 25,1:PRINT STRING$(60," ");:FOR A=1 TO N
  29. 1250 LOCATE 24,1:PRINT STRING$(60," ");:LOCATE 24,1
  30. 1260 PRINT "PLAYER NUMBER "A;" NAME PLEASE  ";
  31. 1270 GOSUB 2090:LINE INPUT;A$(A):IF A$(A)= "" THEN BEEP:GOTO 1250
  32. 1280 A$(A)=LEFT$(A$(A),9)
  33. 1290 NEXT A
  34. 1295 LOCATE 24,1:PRINT STRING$(60," ");:LOCATE 24,1
  35. 1300 IF CC= 1 THEN N= N+ 1:A$(N)= "IBM PC"
  36. 1310 LOCATE 23,1
  37. 1320 A= 0
  38. 1330 REM 
  39. 1340 REM   NEXT ROLL PRESET
  40. 1350 REM  
  41. 1360 A= A+ 1:IF A> N THEN A= 1
  42. 1370 H= 0:GOSUB 5340
  43. 1380 IF A= 0 THEN 4760
  44. 1390 IF K(18,A)= 2 THEN 1360
  45. 1400 LOCATE 23,1:PRINT STRING$(70," ");
  46. 1410 LOCATE 23,4* (A- 1)+ 14
  47. 1420 PRINT A$(A);
  48. 1430 REM 
  49. 1440 REM   INITIAL ROLL
  50. 1450 REM  
  51. 1460 H= H+ 1:MR= 0
  52. 1470 FOR B= 1 TO 5
  53. 1480 J= B- 1:C(B)= INT (6* RND (1)+ 1)
  54. 1490 DIE= C(B):F(B)= 0
  55. 1500 GOSUB 5250
  56. 1510 GOSUB 5530
  57. 1520 NEXT B
  58. 1530 IF A* CC= N THEN 2140
  59. 1540 REM 
  60. 1550 REM  PLAYER SELECTS QTY TO ROLL
  61. 1560 REM 
  62. 1570 GOSUB 7080
  63. 1580 IF H> 2 THEN 1940
  64. 1590 POKE 106,0:PRINT " HOW MANY DICE TO ROLL AGAIN? ";:LOCATE ,,1:GOSUB 2080:GOSUB 7100:F$=KB$:PRINT F$;:F=ASC(F$)-48:LOCATE ,,0
  65. 1600 IF F= - 1 THEN GOSUB 35000
  66. 1610 IF F< 0 OR F> 5 THEN 1570
  67. 1620 IF F= 0 THEN 1940
  68. 1630 IF F= 5 THEN 1430
  69. 1640 REM 
  70. 1650 REM  PLAYER SELECTS DICE TO ROLL
  71. 1660 REM 
  72. 1670 H= H+ 1
  73. 1680 GOSUB 7080
  74. 1690 FOR NN= 1 TO 4:F(NN)= 0:NEXT 
  75. 1700 PRINT " ROLL WHICH";F;"DICE AGAIN   ";:LOCATE ,,1
  76. 1710 GOSUB 2090:FOR ND= 1 TO F:
  77. 1720 GOSUB 7100:F$=KB$::F(ND)= ASC(F$)- 48:GOSUB 2120:IF F(ND)= 0 AND  ND= 1 THEN  ND= F:GOTO 1740
  78. 1730 IF F(ND)< 1 OR  F(ND)> 5 THEN 1720
  79. 1740 PRINT F(ND);:NEXT
  80. 1750 X= 2:XF= 0
  81. 1760 FOR J= 1 TO F
  82. 1770 IF F= 1 THEN 1790
  83. 1780 IF F(J)= F(J+ 1)THEN X= 1
  84. 1790 IF F(1)= 0 THEN XF= 1
  85. 1800 NEXT J:IF XF= 1 THEN H= H- 1:GOTO 1570
  86. 1810 ON X GOTO 1680,1820
  87. 1820 REM  
  88. 1830 REM  PLAYER ROLLS DICE AGAIN
  89. 1840 REM 
  90. 1850 FOR B= 1 TO 4
  91. 1860 IF F(B)= 0 THEN 1920
  92. 1870 C(F(B))= INT (6* RND (1)+ 1)
  93. 1880 DIE= C(F(B)):J= F(B)- 1
  94. 1890 GOSUB 5250
  95. 1900 GOSUB 5530
  96. 1910 F(B)= 0
  97. 1920 NEXT B
  98. 1930 GOTO 1540
  99. 1940 REM 
  100. 1950 REM   PLAY BOARD NUMBER
  101. 1960 REM 
  102. 1970 GOSUB 7080
  103. 1980 PRINT " PLAY BOARD NUMBER?  ";:LOCATE ,,1:GOSUB 2080:GOSUB 7100:I$=KB$:I=ASC(I$)- 48:LOCATE ,,0:IF I> 9 THEN I= I- 7
  104. 1990 GOSUB 2120:IF I> 9 THEN PRINT CHR$ (I+ 55);:GOTO 2010
  105. 2000 PRINT I;
  106. 2010 IF I< 1 OR I> 13 THEN 1970
  107. 2020 IF I= 12 AND K(12,A)> - 1 THEN 2140
  108. 2030 IF K(I,A)= 0 THEN 2140
  109. 2040 LOCATE 24,1:BEEP
  110. 2050 PRINT "NO - NO - DUMMY - - TRY AGAIN";:FOR ND=1 TO 1500:NEXT:LOCATE 24,1:PRINT STRING$(60," ");
  111. 2060 LOCATE 25,1:PRINT STRING$(60," ");:LOCATE 25,1
  112. 2070 GOTO 1980
  113. 2080 REM  HIGH PITCH CLICK
  114. 2090 PLAY "L64T200N70":RETURN
  115. 2100 REM  GLISSANDO SOUND
  116. 2110 PLAY "MBt255MLL64O5CC#DD#EFF#GG#AA#B":RETURN
  117. 2120 ' LO PITCH CLICK
  118. 2130 PLAY "L64T200N46":RETURN
  119. 2140 REM  
  120. 2150 REM  DICE LOGIC
  121. 2160 REM  CLEAR/SET S(M,K)
  122. 2170 REM  
  123. 2180 FOR M= 0 TO 6
  124. 2190 FOR K= 0 TO 5
  125. 2200 S(M,K)= 0
  126. 2210 NEXT K
  127. 2220 NEXT M
  128. 2230 FOR J= 1 TO 5
  129. 2240 X= C(J):S(X,0)= S(X,0)+ 1
  130. 2250 P= S(X,0):S(X,P)= J
  131. 2260 NEXT J
  132. 2270 REM  
  133. 2280 REM  SET S(0,K)=M SEQUENCE BY QTY
  134. 2290 REM  
  135. 2300 X= 0
  136. 2310 FOR J= 5 TO 1 STEP - 1
  137. 2320 FOR M= 6 TO 1 STEP - 1
  138. 2330 IF S(M,0)< > J THEN 2350
  139. 2340 S(0,X)= M:X= X+ 1
  140. 2350 NEXT M
  141. 2360 NEXT J
  142. 2370 IF A* CC= N THEN 2740
  143. 2380 IF I> 6 THEN 2460
  144. 2390 REM  
  145. 2400 REM  CHECK PLAYER BOARD 1-6
  146. 2410 REM  
  147. 2420 GOSUB 6110
  148. 2430 IF X= - 1 THEN 2720
  149. 2440 K(I,A)= I* S(S(0,X),0)
  150. 2450 GOTO 3980
  151. 2460 REM  
  152. 2470 REM  CHECK PLAYER BOARD 7-13
  153. 2480 REM  
  154. 2490 ON I- 6 GOTO 2500,2520,2540,2560,2610,2650,2680
  155. 2500 IF S(S(0,0),0)< 3 THEN 2720
  156. 2510 GOSUB 6190:GOTO 3980
  157. 2520 IF S(S(0,0),0)< 4 THEN 2720
  158. 2530 GOSUB 6190:GOTO 3980
  159. 2540 IF S(S(0,0),0)< > 3 OR S(S(0,1),0)< > 2 THEN 2720
  160. 2550 K(9,A)= 25:GOTO 3980
  161. 2560 IF S(1,0)> 0 AND S(2,0)> 0 AND S(3,0)> 0 AND S(4,0)> 0 THEN 2600
  162. 2570 IF S(2,0)> 0 AND S(3,0)> 0 AND S(4,0)> 0 AND S(5,0)> 0 THEN 2600
  163. 2580 IF S(3,0)> 0 AND S(4,0)> 0 AND S(5,0)> 0 AND S(6,0)> 0 THEN 2600
  164. 2590 GOTO 2720
  165. 2600 K(10,A)= 30:GOTO 3980
  166. 2610 IF S(1,0)AND S(2,0)AND S(3,0)AND S(4,0)AND S(5,0)= 1 THEN 2640
  167. 2620 IF S(2,0)AND S(3,0)AND S(4,0)AND S(5,0)AND S(6,0)= 1 THEN 2640
  168. 2630 GOTO 2720
  169. 2640 K(11,A)= 40:GOTO 3980
  170. 2650 IF S(S(0,0),0)< > 5 THEN 2720
  171. 2660 IF K(12,A)= 0 THEN K(12,A)= 50:GOTO 3980
  172. 2670 K(12,A)= K(12,A)+ 100:GOTO 3980
  173. 2680 GOSUB 6190:GOTO 3980
  174. 2690 REM  
  175. 2700 REM  SET PLAYER INVALID
  176. 2710 REM  
  177. 2720 K(I,A)= - 1
  178. 2730 GOTO 3980
  179. 2740 REM  
  180. 2750 REM  COMPUTER CHECKS
  181. 2760 REM  
  182. 2770 I= 12
  183. 2780 IF S(S(0,0),0)= 5 AND K(12,A)= 0 THEN K(12,A)= 50:GOTO 3980
  184. 2790 IF S(S(0,0),0)= 5 AND K(12,A)> 0 THEN K(12,A)= K(12,A)+ 100:GOTO 3980
  185. 2800 I= 8
  186. 2810 IF S(S(0,0),0)= 4 AND K(8,A)= 0 THEN GOSUB 6190:GOTO 3980
  187. 2820 I= 9
  188. 2830 IF S(S(0,0),0)= 3 AND S(S(0,1),0)= 2 AND K(9,A)= 0 THEN K(9,A)= 25:GOTO 3980
  189. 2840 IF K(11,A)< > 0 THEN 2900
  190. 2850 I= 11
  191. 2860 IF S(1,0)AND S(2,0)AND S(3,0)AND S(4,0)AND S(5,0)= 1 THEN 2890
  192. 2870 IF S(2,0)AND S(3,0)AND S(4,0)AND S(5,0)AND S(6,0)= 1 THEN 2890
  193. 2880 GOTO 2900
  194. 2890 K(11,A)= 40:GOTO 3980
  195. 2900 IF K(10,A)< > 0 THEN 2970
  196. 2910 I= 10
  197. 2920 IF S(1,0)> 0 AND S(2,0)> 0 AND S(3,0)> 0 AND S(4,0)> 0 THEN 2960
  198. 2930 IF S(2,0)> 0 AND S(3,0)> 0 AND S(4,0)> 0 AND S(5,0)> 0 THEN 2960
  199. 2940 IF S(3,0)> 0 AND S(4,0)> 0 AND S(5,0)> 0 AND S(6,0)> 0 THEN 2960
  200. 2950 GOTO 2970
  201. 2960 K(10,A)= 30:GOTO 3980
  202. 2970 IF H< 3 THEN 3140
  203. 2980 I= 6
  204. 2990 IF S(6,0)> 2 AND K(6,A)= 0 THEN K(6,A)= 6* S(6,0):GOTO 3980
  205. 3000 I= 5
  206. 3010 IF S(5,0)> 2 AND K(5,A)= 0 THEN K(5,A)= 5* S(5,0):GOTO 3980
  207. 3020 I= 4
  208. 3030 IF S(4,0)> 2 AND K(4,A)= 0 THEN K(4,A)= 4* S(4,0):GOTO 3980
  209. 3040 I= 3
  210. 3050 IF S(3,0)> 2 AND K(3,A)= 0 THEN K(3,A)= 3* S(3,0):GOTO 3980
  211. 3060 I= 7
  212. 3070 IF S(S(0,0),0)> 2 AND K(7,A)= 0 THEN GOSUB 6190:GOTO 3980
  213. 3080 I= 2
  214. 3090 IF S(2,0)> 2 AND K(2,A)= 0 THEN K(2,A)= 2* S(2,0):GOTO 3980
  215. 3100 I= 1
  216. 3110 IF S(1,0)> 2 AND K(1,A)= 0 THEN K(1,A)= S(1,0):GOTO 3980
  217. 3120 I= 13:IF K(13,A)< > 0 THEN 3140
  218. 3130 IF C(1)+ C(2)+ C(3)+ C(4)+ C(5)> 19 THEN GOSUB 6190:GOTO 3980
  219. 3140 REM  
  220. 3150 REM  CLEAR DICE NUMBER F(B)
  221. 3160 REM  COMPUTER
  222. 3170 REM  
  223. 3180 FOR B= 1 TO 5
  224. 3190 F(B)= 0
  225. 3200 NEXT B
  226. 3210 REM  
  227. 3220 REM  GET DICE CONTROL
  228. 3230 REM  COMPUTER
  229. 3240 REM  
  230. 3250 H= H+ 1:IF H> 3 THEN 3840
  231. 3260 I= M(MR):IF I< > 0 THEN 3290
  232. 3270 MR= MR+ 1:IF MR> 13 THEN MR= 1
  233. 3280 GOTO 3260
  234. 3290 IF I= 12 AND K(12,A)> - 1 THEN 3330
  235. 3300 IF K(I,A)< > 0 THEN 3270
  236. 3310 IF I= 9 THEN 3440
  237. 3320 IF I= 10 OR I= 11 THEN 3560
  238. 3330 REM  
  239. 3340 REM  GET DICE 1,2,3,4
  240. 3350 REM  COMPUTER
  241. 3360 REM  
  242. 3370 M= 0:J= 1
  243. 3380 M= M+ 1:IF M> 4 THEN 3720
  244. 3390 K= S(0,M):IF K= 0 THEN 3720
  245. 3400 FOR L= 1 TO S(K,0)
  246. 3410 F(J)= S(K,L):J= J+ 1
  247. 3420 NEXT L
  248. 3430 GOTO 3380
  249. 3440 REM  
  250. 3450 REM  GET DICE FH
  251. 3460 REM  COMPUTER
  252. 3470 REM  
  253. 3480 M= 0:J= 1
  254. 3490 M= M+ 1:IF M> 4 THEN 3720
  255. 3500 K= S(0,M):IF K= 0 THEN 3720
  256. 3510 IF K> 1 THEN 3490
  257. 3520 FOR L= 1 TO S(K,0)
  258. 3530 F(J)= S(K,L):J= J+ 1
  259. 3540 NEXT L
  260. 3550 GOTO 3490
  261. 3560 REM  
  262. 3570 REM  GET DICE LG/SM ST
  263. 3580 REM  COMPUTER
  264. 3590 REM  
  265. 3600 M= 0:J= 1
  266. 3610 M= M+ 1:IF M> 4 THEN 3680
  267. 3620 K= S(0,M):IF K= 0 THEN 3680
  268. 3630 IF S(K,0)= 1 THEN 3610
  269. 3640 FOR L= 1 TO S(K,0)
  270. 3650 F(J)= S(K,L):J= J+ 1
  271. 3660 NEXT L
  272. 3670 GOTO 3610
  273. 3680 IF F(1)< > 0 THEN 3720
  274. 3690 L= INT (2* RND (1)+ 1)
  275. 3700 F(1)= 5
  276. 3710 IF L= 1 THEN F(1)= 1
  277. 3720 REM  
  278. 3730 REM  COMPUTER ROLL AGAIN
  279. 3740 REM  
  280. 3750 FOR B= 1 TO 4
  281. 3760 IF F(B)< 1 THEN 3810
  282. 3770 C(F(B))= INT (6* RND (1)+ 1)
  283. 3780 DIE= C(F(B)):J= F(B)- 1
  284. 3790 GOSUB 5250
  285. 3800 GOSUB 5530
  286. 3810 F(B)= 0
  287. 3820 NEXT B
  288. 3830 GOTO 2140
  289. 3840 REM  
  290. 3850 REM  COMPUTER MUST SCORE
  291. 3860 REM  
  292. 3870 MR= MR+ 1:IF MR> 13 THEN MR= 1
  293. 3880 I= M(MR):IF I= 0 THEN 3870
  294. 3890 IF K(I,A)< > 0 THEN 3870
  295. 3900 IF I> 6 THEN 3960
  296. 3910 GOSUB 6110
  297. 3920 IF X= - 1 THEN 3970
  298. 3930 IF K(I,A)< > 0 THEN 3870
  299. 3940 K(I,A)= S(I,0)* I
  300. 3950 IF K(I,A)< > 0 THEN 3980
  301. 3960 IF I= 13 AND K(13,A)= 0 THEN GOSUB 6190
  302. 3970 IF K(I,A)= 0 THEN K(I,A)= - 1
  303. 3980 REM  
  304. 3990 REM  GET SCOREBOARD TOTALS
  305. 4000 REM  
  306. 4010 FOR J= 14 TO 17
  307. 4020 K(J,A)= 0
  308. 4030 NEXT J
  309. 4040 FOR J= 1 TO 6
  310. 4050 IF K(J,A)< 0 THEN 4070
  311. 4060 K(15,A)= K(15,A)+ K(J,A)
  312. 4070 NEXT J
  313. 4080 IF K(15,A)> 62 THEN K(14,A)= 35
  314. 4090 FOR J= 7 TO 13
  315. 4100 IF K(J,A)< 0 THEN 4120
  316. 4110 K(16,A)= K(16,A)+ K(J,A)
  317. 4120 NEXT J
  318. 4130 K(17,A)= K(14,A)+ K(15,A)+ K(16,A)
  319. 4140 REM  
  320. 4150 REM  PRINT SCORE
  321. 4160 REM  
  322. 4170 GOSUB 2110
  323. 4180 COLOR 15,0
  324. 4190 FOR J= 1 TO 6
  325. 4200 IF K(J,A)< 0 THEN LOCATE J+1,4* (A- 1)+ 15:PRINT "  0";:GOTO 4230
  326. 4210 IF K(J,A)< 1 THEN 4230
  327. 4220 LOCATE J+1,4* (A- 1)+ 15:PRINT  USING"###";K(J,A);
  328. 4230 NEXT J
  329. 4240 FOR J= 7 TO 13
  330. 4250 IF K(J,A)< 0 THEN LOCATE J+4,4* (A- 1)+ 15:PRINT "  0":GOTO 4280
  331. 4260 IF K(J,A)< 1 THEN 4280
  332. 4270 LOCATE J+4,4* (A- 1)+ 15:PRINT USING "###";K(J,A)
  333. 4280 NEXT J
  334. 4290 LOCATE 9,4* (A- 1)+ 15:PRINT USING "###";K(15,A)
  335. 4300 LOCATE 19,4* (A- 1)+ 15:PRINT USING "###";K(16,A)
  336. 4310 LOCATE 20,4* (A- 1)+ 15:PRINT USING "###";K(14,A)
  337. 4320 LOCATE 21,4* (A- 1)+ 15:PRINT USING "###";K(17,A)
  338. 4330 COLOR 7,0
  339. 4340 IF A* CC< > N THEN 1330
  340. 4350 REM  
  341. 4360 REM  RESET M(I) COMPUTER PRIORITIES
  342. 4370 REM  
  343. 4380 FOR B= 1 TO 13
  344. 4390 IF M(B)= 12 THEN 4410
  345. 4400 IF M(B)= I THEN M(B)= 0
  346. 4410 NEXT B
  347. 4420 GOTO 1330
  348. 4430 REM  
  349. 4440 REM   INSTRUCTIONS
  350. 4450 REM  
  351. 4460 PRINT "            Y A H T Z E E "
  352. 4470 PRINT "THIS IS THE GAME OF YAHTZEE - "
  353. 4480 PRINT "FROM 1 TO 7 PLAYERS MAY PLAY AT THE SAME TIME"
  354. 4490 PRINT "WITH EACH PLAYERS CURRENT STATUS SHOWN ON THE"
  355. 4500 PRINT "PLAYING BOARD, INCLUDING TOTAL SCORES"
  356. 4510 PRINT 
  357. 4520 PRINT "THE ONLY DIFFERENCE BETWEEN THIS GAME AND THE"
  358. 4530 PRINT "POPULAR HOME GAME IS THAT YOU MAY GET MULTIPLE"
  359. 4540 PRINT "YAHTZEES HERE ..... THE FIRST YAHTZEE SCORES"
  360. 4550 PRINT "50 POINTS, AND EACH ADDITIONAL ONE WILL YIELD"
  361. 4560 PRINT "A BONUS OF 100 POINTS (IF THE YAHTZEE IS PUT"
  362. 4570 PRINT "INTO THE YAHTZEE BLOCK)..... IN ADDITION YOU"
  363. 4580 PRINT "WILL BE GIVEN AN EXTRA TURN AT THE END OF"
  364. 4590 PRINT "THE GAME":PRINT :PRINT 
  365. 4600 PRINT "THE WINNER WILL BE ANNOUNCED AT THE END OF"
  366. 4610 PRINT "THE GAME - - BUT I WOULDNT ADVISE ANYONE"
  367. 4620 PRINT "TO BE LAST......."
  368. 4630 PRINT:PRINT
  369. 4640 GOSUB 2090:INPUT "HIT RETURN TO CONTINUE  ";Y$:BEEP
  370. 4650 RETURN 
  371. 4660 RETURN
  372. 4670 LOCATE 10,10:PRINT "YATZEE.BAS     VER 3.2"
  373. 4680 LOCATE 12,10:PRINT "27 JUN 79"
  374. 4690 LOCATE 14,10:PRINT "DEVELOPED BY"
  375. 4700 LOCATE 15,13:PRINT "J.L. HELMS    &    M.F. PEZOK"
  376. 4710 LOCATE,16,13:PRINT "1009 LEYTE RD / 1321 SAIPAN RD"
  377. 4720 LOCATE 17,17:PRINT "CORONADO,  CA.  92118"
  378. 4730 LOCATE 18,15:PRINT "(714) 435-6992 / 437-4659"
  379. 4740 PRINT CHR$(11)
  380. 4750 RETURN 
  381. 4760 REM 
  382. 4770 REM   END - SORT WINNER
  383. 4780 REM 
  384. 4790 X= 2:IF N= 1 THEN 4870
  385. 4800 FOR J= 1 TO N- 1
  386. 4810 IF K(17,J)> K(17,J+ 1)THEN 4850
  387. 4820 K= K(17,J):K(17,J)= K(17,J+ 1):K(17,J+ 1)= K
  388. 4830 A$= A$(J):A$(J)= A$(J+ 1):A$(J+ 1)= A$
  389. 4840 X= 1
  390. 4850 NEXT J
  391. 4860 ON X GOTO 4760,4870
  392. 4870 REM 
  393. 4880 REM   PRINT WINNERS STANDINGS
  394. 4890 REM 
  395. 4900 RESTORE 5200
  396. 4910 FOR J= 1 TO N
  397. 4920 LOCATE 25,1:PRINT STRING$(60," ");
  398. 4930 IF J> 1 AND J= N THEN RESTORE 5240
  399. 4940 LOCATE 25,1:READ A$
  400. 4950 PRINT A$;"     ";A$(J);" ";
  401. 4960 TT= 500* (N- J+ 1):IF TT< 1500 THEN TT= 1500
  402. 4970 FOR T= 1 TO TT:NEXT T
  403. 4980 NEXT J
  404. 4990 LOCATE 25,1:PRINT STRING$(60," ");
  405. 5000 LOCATE 24,1:PRINT "+++   END OF GAME   +++";
  406. 5010 FOR T= 1 TO 2000:NEXT T
  407. 5020 '
  408. 5030 GOSUB 2090:LOCATE 25,1:INPUT "PLAY AGAIN?  Y/N  ";Y$
  409. 5040 IF LEFT$ (Y$,1)= "Y"THEN GOSUB 5090:GOTO 1110
  410. 5050 IF LEFT$ (Y$,1)= CHR$(27) THEN BEEP:GOTO 5070
  411. 5060 IF LEFT$ (Y$,1)< > "N"THEN BEEP:GOTO 5030
  412. 5070 GOTO 65200
  413. 5080 END 
  414. 5090 REM 
  415. 5100 REM   CLEAR MATRICES
  416. 5110 REM 
  417. 5120 FOR K= 1 TO 7
  418. 5130 FOR J= 1 TO 18
  419. 5140 K(J,K)= 0
  420. 5150 NEXT J
  421. 5160 A$(K)= ""
  422. 5170 NEXT K
  423. 5180 CLS
  424. 5190 RETURN 
  425. 5200 DATA "+++   THE WINNER   +++"
  426. 5210 DATA " SECOND PLACE"," THIRD PLACE "
  427. 5220 DATA " FOURTH PLACE "," FIFTH PLACE "
  428. 5230 DATA " SIXTH PLACE "
  429. 5240 DATA " DEAD LAST "
  430. 5250 REM 
  431. 5260 REM   ERASE DIE
  432. 5270 REM 
  433. 5280 COLOR 0,7:PRINT"";:
  434. 5290 LOCATE 4* J+ 1,50:PRINT"       ";
  435. 5300 LOCATE 4* J+ 2,50:PRINT"       ";
  436. 5310 LOCATE 4* J+ 3,50:PRINT"       ";
  437. 5320 COLOR 7,0
  438. 5330 RETURN 
  439. 5340 REM  
  440. 5350 REM    CHECK IF DONE
  441. 5360 REM  
  442. 5370 X= 0
  443. 5380 FOR J= 1 TO N
  444. 5390 Y= 2
  445. 5400 FOR K= 1 TO 13
  446. 5410 IF K(K,J)= 0 THEN Y= 1
  447. 5420 NEXT K
  448. 5430 K(18,J)= Y
  449. 5440 IF Y= 2 THEN X= X+ 1
  450. 5450 NEXT J
  451. 5460 IF X= > N THEN A= 0
  452. 5470 RETURN 
  453. 5480 REM  
  454. 5490 REM  COMPUTER PRIORITIES INFO
  455. 5500 REM  
  456. 5510 GOSUB 6780
  457. 5520 RETURN 
  458. 5530 REM 
  459. 5540 REM   PRINT DIE
  460. 5550 REM 
  461. 5560 COLOR 0,7:LOCATE ,,0
  462. 5570 REM 
  463. 5580 PLAY "L32T200N=TN(DIE);"
  464. 5590 ON DIE GOTO 5930,5870,5810,5750,5690,5630
  465. 5600 '
  466. 5610 '   SIX
  467. 5620 '
  468. 5630 LOCATE 4*J+1,50:PRINT "";CHR$(32);CHR$(2);CHR$(32);CHR$(2);CHR$(32);CHR$(2);CHR$(32);
  469. 5640 LOCATE 4*J+2,50:PRINT CHR$(32);CHR$(32);CHR$(32);CHR$(32);CHR$(32);CHR$(32);CHR$(32);
  470. 5650 LOCATE 4*J+3,50:PRINT CHR$(32);CHR$(2);CHR$(32);CHR$(2);CHR$(32);CHR$(2);CHR$(32);:GOTO 5960
  471. 5660 '
  472. 5670 '   FIVE
  473. 5680 '
  474. 5690 LOCATE 4*J+1,50:PRINT "";CHR$(32);CHR$(2);CHR$(32);" ";CHR$(32);CHR$(2);" ";
  475. 5700 LOCATE 4*J+2,50:PRINT " ";CHR$(32);" ";CHR$(2);" ";CHR$(32);" ";
  476. 5710 LOCATE 4*J+3,50:PRINT " ";CHR$(2);" ";CHR$(32);" ";CHR$(2);" ";:GOTO 5960
  477. 5720 '
  478. 5730 '   FOUR
  479. 5740 '
  480. 5750 LOCATE 4*J+1,50:PRINT "";" ";CHR$(2);"  ";CHR$(32);CHR$(2);" ";
  481. 5760 LOCATE 4*J+2,50:PRINT "   ";CHR$(32);CHR$(32);CHR$(32);
  482. 5770 LOCATE 4*J+3,50:PRINT " ";CHR$(2);"  ";CHR$(32);CHR$(2);" ";:GOTO 5960
  483. 5780 '
  484. 5790 '   THREE
  485. 5800 '
  486. 5810 LOCATE 4*J+1,50:PRINT "";" ";CHR$(2);"     ";
  487. 5820 LOCATE 4*J+2,50:PRINT "   ";CHR$(2);"   ";
  488. 5830 LOCATE 4*J+3,50:PRINT "     ";CHR$(2);" ";:GOTO 5960
  489. 5840 '
  490. 5850 '   TWO
  491. 5860 '
  492. 5870 LOCATE 4*J+1,50:PRINT "";" ";CHR$(2);"     ";
  493. 5880 LOCATE 4*J+2,50:PRINT "       ";
  494. 5890 LOCATE 4*J+3,50:PRINT "     ";CHR$(2);" ";:GOTO 5960
  495. 5900 '
  496. 5910 '   ONE
  497. 5920 '
  498. 5930 LOCATE 4*J+1,50:PRINT "";"       ";
  499. 5940 LOCATE 4*J+2,50:PRINT "   ";CHR$(2);"   ";
  500. 5950 LOCATE 4*J+3,50:PRINT "       ";:GOTO 5960
  501. 5960 REM   GET OUT
  502. 5970 COLOR 7,0
  503. 5980 LOCATE 1,1
  504. 5990 RETURN 
  505. 6000 REM  
  506. 6010 REM  COMPUTER OPTION
  507. 6020 REM  
  508. 6030 CC= 0
  509. 6040 LOCATE 25,1
  510. 6050 PRINT "DO YOU WISH TO PLAY AGAINST ME?  Y/N  ";:GOSUB 2090
  511. 6060 Y$=INKEY$:IF Y$="" THEN 6060 ELSE BEEP
  512. 6070 IF Y$= "N"THEN RETURN 
  513. 6080 IF Y$< > "Y"THEN 6040
  514. 6090 CC= 1
  515. 6100 RETURN 
  516. 6110 REM  
  517. 6120 REM  CHECK FOR ACES-SIXES ANY POSITION
  518. 6130 REM  
  519. 6140 X= - 1
  520. 6150 FOR J= 0 TO 4
  521. 6160 IF S(0,J)= I THEN X= J
  522. 6170 NEXT J
  523. 6180 RETURN 
  524. 6190 REM  
  525. 6200 REM  TOTAL DICE VALUE
  526. 6210 REM  
  527. 6220 FOR J= 1 TO 5
  528. 6230 K(I,A)= K(I,A)+ C(J)
  529. 6240 NEXT J
  530. 6250 RETURN 
  531. 6260 REM  
  532. 6270 REM  MATRIX INFORMATION
  533. 6280 REM  
  534. 6290 REM  C(5)     CURRENT DICE
  535. 6300 REM  K(18,7)  SCOREBOARD
  536. 6310 REM           COLUMNS 1-13 BOARD NUMBER
  537. 6320 REM           COLUMN    14 BONUS UPPER
  538. 6330 REM           COLUMN    15 TOTAL UPPER
  539. 6340 REM           COLUMN    16 TOTAL LOWER
  540. 6350 REM           COLUMN    17 GRAND TOTAL
  541. 6360 REM           COLUMN    18 DONE/NOT DONE STATUS
  542. 6370 REM           ROW     1- 7 PLAYERS SCORE
  543. 6380 REM           ROW        N COMPUTERS SCORE (<7 PLAYERS)
  544. 6390 REM  
  545. 6400 REM  F(5)     DICE NUMBER TO ROLL AGAIN
  546. 6410 REM  A$(7)    PLAYERS NAMES
  547. 6420 REM  S(6,5)   COMPUTERS DICE LOGIC
  548. 6430 REM           COLUMN     0 DICE NUMBER BY QTY SEQUENCE
  549. 6440 REM           COLUMN     1 QTY/POSITION FOR ACES
  550. 6450 REM           COLUMN     2 QTY/POSITION FOR TWOS
  551. 6460 REM           COLUMN     3 QTY/POSITION FOR THREES
  552. 6470 REM           COLUMN     4 QTY/POSITION FOR FOURS
  553. 6480 REM           COLUMN     5 QTY/POSITION FOR FIVES
  554. 6490 REM           COLUMN     6 QTY/POSITION FOR SIXES
  555. 6500 REM           ROW        0 QUANTITY OF DICE
  556. 6510 REM           ROW     1- 5 POSITION OF DICE IN C(5)
  557. 6520 REM  
  558. 6530 REM  SAMPLE S(Y,X) FOR DICE OF 5,2,4,6,4
  559. 6540 REM  
  560. 6550 REM  Y/X   0  1  2  3  4  5
  561. 6560 REM  0     4  6  5  2          IN QTY/VALUE SEQUENCE
  562. 6570 REM  1                         NO DIE=1
  563. 6580 REM  2     1  2                1 TWO POSITION 2
  564. 6590 REM  3                         NO DIE=3
  565. 6600 REM  4     2  3  5             2 FOURS POSITIONS 3 AND 5
  566. 6610 REM  5     1  1                1 FIVE POSITION 1
  567. 6620 REM  6     1  4                1 SIX POSITION 4
  568. 6630 REM           +           +
  569. 6640 REM  +     +  ++++++++++++++++ SECTION FOR POSITION DATA
  570. 6650 REM  +     +------------------ COLUMN INDICATES QTY
  571. 6660 REM  +------------------------ INDEX EQUATES TO DIE VALUE
  572. 6670 REM  
  573. 6680 REM  M(13)    PRIORITY NUMBERS FOR MUST SCORE WHERE VALUE
  574. 6690 REM           REFERS TO PLAY BOARD NUMBER
  575. 6700 REM  
  576. 6710 REM  TO RUN INTERNAL CHECKS SECTION - ENTER A -1 FOR
  577. 6720 REM  PLAYING BOARD NUMBER OR QTY OF DICE TO ROLL
  578. 6730 REM  AGAIN - - DATA WILL NOT BE LOST AND SCREEN
  579. 6740 REM  WILL BE RESET WITH CURRENT DICE SHOWN - -
  580. 6750 REM  PLAYERS/COMPUTERS SCORE WILL NOT SHOW UNTIL
  581. 6760 REM  AFTER THEIR TURN
  582. 6770 REM  
  583. 6780 REM  COMPUTER PRIORIRIES
  584. 6790 RESTORE 6800
  585. 6800 DATA 11,9,12,8,1,2,3,4,5,6,10,7,13
  586. 6810 FOR Y= 1 TO 13:READ M(Y):NEXT :RETURN :RETURN 
  587. 6820 REM player's board
  588. 6830 LOCATE 25,1,0:COLOR 7,0:CLS:COLOR 5,3:LOCATE 1,1:FOR Y=1 TO 22:PRINT STRING$(80," ");:NEXT:LOCATE 1,1
  589. 6840 PRINT"             ╒═══╤═══╤═══╤═══╤═══╤═══╕
  590. 6850 PRINT"ACES........1│...│...│...│...│...│...│1"
  591. 6860 PRINT"TWOS........2│...│...│...│...│...│...│2"
  592. 6870 PRINT"THREES......3│...│...│...│...│...│...│3"
  593. 6880 PRINT"FOURS.......4│...│...│...│...│...│...│4"
  594. 6890 PRINT"FIVES.......5│...│...│...│...│...│...│5"
  595. 6900 PRINT"SIXES.......6│...│...│...│...│...│...│6"
  596. 6910 PRINT"             ╞═══╪═══╪═══╪═══╪═══╪═══╡"
  597. 6920 PRINT"TOTAL UPPER..│...│...│...│...│...│...│"
  598. 6930 PRINT"             ╞═══╪═══╪═══╪═══╪═══╪═══╡"
  599. 6940 PRINT"3 OF A KIND.7│...│...│...│...│...│...│7"
  600. 6950 PRINT"4 OF A KIND.8│...│...│...│...│...│...│8"
  601. 6960 PRINT"FULL HOUSE..9│...│...│...│...│...│...│9"
  602. 6970 PRINT"SM STRAIGHT.A│...│...│...│...│...│...│A"
  603. 6980 PRINT"LG STRAIGHT.B│...│...│...│...│...│...│B"
  604. 6990 PRINT"YATZEE......C│...│...│...│...│...│...│C"
  605. 7000 PRINT"CHANCE......D│...│...│...│...│...│...│D"
  606. 7010 PRINT"             ╞═══╪═══╪═══╪═══╪═══╪═══╡"
  607. 7020 PRINT"TOTAL LOWER..│...│...│...│...│...│...│"
  608. 7030 PRINT"TOP BONUS....│...│...│...│...│...│...│"
  609. 7040 PRINT"GRAND TOTAL..│...│...│...│...│...│...│"
  610. 7050 PRINT"             ╘═══╧═══╧═══╧═══╧═══╧═══╛"
  611. 7060 FOR N=1 TO 5:LOCATE N*4-2,46:PRINT N;:NEXT
  612. 7070 RETURN
  613. 7080 LOCATE 25,1:PRINT STRING$(70," ");:LOCATE 25,1:RETURN
  614. 7090 ' KB INPUT AND ESCAPE
  615. 7100 KB$="":WHILE KB$="":KB$=INKEY$:WEND
  616. 7110 IF KB$=CHR$(27) THEN 5070 ELSE RETURN
  617. 65000 REM -*- program name -*-
  618. 65010 REM Version 1.00
  619. 65020 KEY(2) ON:ON KEY(2) GOSUB 65200
  620. 65030 KEY OFF:SCREEN 0,1:COLOR 15,3,1:WIDTH 40:CLS:LOCATE 5,18:PRINT " IBM "
  621. 65040 LOCATE 7,12,0:PRINT "Personal Computer"
  622. 65050 COLOR 10,0:LOCATE 10,9,0:PRINT CHR$(213)+STRING$(21,205)+CHR$(184)
  623. 65060 LOCATE 11,9,0:PRINT CHR$(179)+" -*-   YAHTZEE   -*- "+CHR$(179)
  624. 65070 LOCATE 12,9,0:PRINT CHR$(179)+STRING$(21,32)+CHR$(179)
  625. 65080 LOCATE 13,9,0:PRINT CHR$(179)+"By: J Helms & M Pezok"+CHR$(179)
  626. 65085 LOCATE 14,9,0:PRINT CHR$(179)+"PC vsn: Patrick Leabo"+CHR$(179)
  627. 65090 LOCATE 15,9,0:PRINT CHR$(212)+STRING$(21,205)+CHR$(190)
  628. 65100 COLOR 15,0:LOCATE 19,5,0:PRINT "   Original written for CCII   "
  629. 65110 COLOR 14,0:LOCATE 23,7,0:PRINT "Press space bar to continue";CHR$(7);
  630. 65120 COLOR 30:LOCATE 23,5,0:PRINT CHR$(15);:LOCATE 23,35,0:PRINT CHR$(15);
  631. 65130 COLOR 14
  632. 65140 POKE 106,0 'CLEAR KYBD BUFFER
  633. 65150 CMD$ = INKEY$
  634. 65160 IF CMD$="" THEN GOTO 65150
  635. 65170 IF CMD$ = CHR$(27) THEN GOTO 65200
  636. 65180 IF CMD$ = " " THEN GOTO 1
  637. 65190 GOTO 65140
  638. 65200 ON ERROR GOTO 65240:RUN"BASMENU
  639. 65210 IF E<>71 THEN RUN"control
  640. 65220 RUN"A:TRANSFER
  641. 65230 SYSTEM
  642. 65240 E=ERR:RESUME NEXT
  643.